package main

import (
	"crontab/worker"
	"flag"
	"fmt"
	"runtime"
	"time"
)

func initEnv() {
	runtime.GOMAXPROCS(runtime.NumCPU())
}

var (
	confFile string //配置文件路径
)

//解析命令行参数
func initArgs() {
	//geshi:worker -config ./ccc.config
	flag.StringVar(&confFile, "config", "./worker.json", "指定worker配置文件")
	flag.Parse()

}

func main() {
	var (
		err error
	)
	//初始化命令行参数
	initArgs()
	/**
	初始化线程
	*/
	initEnv()

	//加载配置
	if err = worker.InitConfig(confFile); err != nil {
		goto ERR
	}
	//初始化work的信息
	if err = worker.InitServerRegister(); err != nil {
		goto ERR
	}

	//启动mongodb初始化
	if err = worker.InitMongoDB(); err != nil {
		goto ERR
	}

	//启动任务管理器，也就是zookeeper，要先启动zk，因为http内部调用了zk
	if err = worker.InitJobMgr(); err != nil {
		goto ERR
	}
	//初始化执行器
	if err = worker.InitExecutor(); err != nil {
		goto ERR

	}
	//初始化调度器
	worker.InitScheduler()

	//执行监视器
	if err = worker.InitWatcher(); err != nil {
		goto ERR
	}
	for {
		time.Sleep(1 * time.Second)
	}

	return

ERR:
	fmt.Println(err)
}
